`
https://leetcode.cn/problems/merge-intervals/
`

/**
 * @param {number[][]} intervals
 * @return {number[][]}
 */
var merge = function (intervals) {
  // 按起点大小升序排序
  intervals.sort((a, b) => a[0] - b[0])

  // 结果
  const res = []

  // 把第一个区间作为起点和终点
  let left = intervals[0][0], right = intervals[0][1]

  for (let i = 1; i < intervals.length; i++) {
    const intv = intervals[i]

    // 如果相交，合并两个区间
    if (left <= intv[0] && right >= intv[0] && right <= intv[1]) {
      right = intv[1]
    }

    // 如果不相交，把之前的区间存进结果，更新区间
    if (right < intv[0]) {
      res.push([left, right])
      left = intv[0]
      right = intv[1]
    }
  }

  // 把最后一个区间存进结果
  res.push([left, right])

  return res
};